package com.nageoffer.shortlink.project.dao.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.nageoffer.shortlink.project.dao.entity.ShortLinkDO;
import com.nageoffer.shortlink.project.dto.req.ShortLinkPageReqDTO;
import com.nageoffer.shortlink.project.dto.req.ShortLinkRecycleBinPageReqDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;


@Mapper
public interface ShortLinkMapper extends BaseMapper<ShortLinkDO> {



    /**
     * 短链接访问统计自增
     */
    @Update("""
            update t_link set total_pv = total_pv + #{totalPv},total_uv = total_uv + #{totalUv},total_uip = total_uip + #{totalUip}
            where gid = #{gid} and full_short_url = #{fullShortUrl}
            """)
    void incrementStats(@Param("gid") String gid,
                        @Param("fullShortUrl") String fullShortUrl,
                        @Param("totalPv") Integer totalPv,
                        @Param("totalUv") Integer totalUv,
                        @Param("totalUip") Integer totalUip);


    /**
     * 分页统计短链接 requestParam
     */
    IPage<ShortLinkDO> pageLink(ShortLinkPageReqDTO requestParam);

    /**
     * 分页查询回收站短链接
     * @param requestParam
     * @return
     */
    IPage<ShortLinkDO> pageRecycleBinLink(ShortLinkRecycleBinPageReqDTO requestParam);

    /**
     * 分页查询回收站短链接并排序
     * @param requestParam
     * @return
     */
    IPage<ShortLinkDO> pageRecycleBinLinkWithOrder(ShortLinkPageReqDTO requestParam);
}
